Determining the complexity of a test program

ABSTRACT

An example includes the following operations: identifying parameters associated with a test program, where the parameters are based on at least one of a device under test (DUT) to be tested by the test program or a type of test to be performed on the DUT by the test program; assigning weights to the parameters; generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights, where the numerical value is indicative of a complexity of the test program; and using the numerical value to obtain information about effort needed to develop future test programs.

TECHNICAL FIELD

This specification relates generally to example processes for determining the complexity of a test program.

BACKGROUND

Automatic test equipment (ATE) includes test instruments for sending signals to, and receiving signals from, a device under test (DUT) in order to test operation of the DUT. Examples of test instruments include, but are not limited to, radio frequency (RF) test instruments and microwave test instruments. A test instrument may be configured to execute a test program to generate the signals sent the DUT and to analyze the signals received from the DUT. The test program may be written in source code by a test engineer. This source code may be compiled and provided to a test instrument for execution.

SUMMARY

An example method is performed by one or more processing devices. The method includes the following operations: identifying parameters associated with a test program, where the parameters are based on at least one of a device under test (DUT) to be tested by the test program or a type of test to be performed on the DUT by the test program; assigning weights to the parameters; generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights, where the numerical value is indicative of a complexity of the test program; and using the numerical value to obtain information about effort needed to develop future test programs. The operations may be implemented using instructions that are stored on one or more non-transitory storage devices and that are executable by one or more processing devices. One of more of the following features may also be included, either alone or in combination.

Obtaining the information may include generating a graph that plots the numerical value against a time period for a tool or the entity to develop the test program. The graph may include multiple numerical values for test programs plotted against corresponding times to develop the test programs. It may be determined whether the numerical value is an outlier on a trend that is based on the multiple numerical values. Obtaining the information may include dividing the numerical value by an amount of time taken to develop the test program to produce a numerical value per unit time.

The operations may include using the numerical value to obtain information about a tool used to develop the test program. In this example, obtaining the information may include generating a graph that plots the numerical value against a time period to develop the test program. The graph may include multiple numerical values for test programs plotted against corresponding times to develop the test programs. The operations may include determining whether the numerical value changes relative to a different numerical value for a different tool used to develop the test program. The operations may include generating a graph that plots multiple numerical values for test programs plotted against corresponding times to develop the test programs. In this example, obtaining the information includes using the graph to predict an amount of effort by the entity tasked to develop the test program.

The test parameters may relate to operation of the test program on a test system. The test parameters may relate to a test system on which the test program is operated. Generating the numerical value indicative of the complexity of the test program may include executing processes based on digital testing, analog testing, and direct current (DC) testing. Generating the numerical value may include performing an operation that is based on a complexity of a device interface board included on a test system configured to execute the test program. Generating the numerical value may include performing an operation that is based on serial site loops employed as part of a testing process implemented by the test program. Generating the numerical value may include performing an operation that is based on insertions employed as part of a testing process implemented by the test program. Generating the numerical value may include performing an operation that is based on whether one or more devices under test are known-good. Generating the numerical value may include performing an operation that is based on whether one or more devices under test are released to production.

At least one of the parameters associated with the test program may have a linear impact on the numerical value. At least one of the parameters may have a non-linear impact on the numerical value. The operations may also include using the numerical value to obtain information about at least one of a tool used to develop the test program or an entity tasked to develop the test program. The entity may be an engineer. The DUT may be or include at least one of a digital device, a radio frequency wireless device, a mixed signal device, or a power device.

Any two or more of the features described in this specification, including in this summary section, can be combined to form implementations not specifically described herein.

The systems and techniques described herein, or portions thereof, can be implemented using, or controlled by, a computer program product that includes instructions that are stored on one or more non-transitory machine-readable storage media, and that are executable on one or more processing devices to implement the operations described herein. The systems and techniques described herein, or portions thereof, can be implemented as an apparatus, method, or electronic system that can include one or more processing devices and memory to store executable instructions to implement various operations.

The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is block diagram side view of components of an example test system.

FIGS. 2 to 6 each shows a portion of a spreadsheet or table containing information that is usable to determine the complexity of a test program.

FIG. 7 is a flowchart showing operations included in an example process for determining the complexity of a test program.

FIG. 8 is a graph showing numerical values indicative of complexities of multiple test programs plotted against test program development time.

Like reference numerals in different figures indicate like elements.

DETAILED DESCRIPTION

Described herein are example processes for determining the complexity of a test program. The processes may include generating a numerical value indicative of a complexity of the test program and using that numerical value to obtain information about an amount of effort needed to develop future test programs.

In this regard, an example test system, such as automatic test equipment (ATE), includes test instruments that are configured to output test signals to a device under test (DUT) and to receive signals from the DUT. The signals received may be responsive to the test signals or independent thereof. A test instrument may be configured to execute a test program to generate the signals sent to the DUT and to analyze the received. The test program may be written in source code by a test engineer. This source code may be compiled and provided to a test instrument for execution.

A test engineer may develop the test program using one or more tools. For example, a test engineer may use computer programs to develop the test program. Different test programs have different levels of complexity and, therefore, may require a different amount of effort to develop. Engineering time is one metric used to measure the amount of effort. For example, engineering time may be measured in the number of years a test engineer having an ordinary skill level would take to complete a task.

The levels of complexity of a test program may be based on various parameters that may be based, for example, on a DUT to be tested by a test program, types of tests to be performed on by the test program, and attributes of ATE or test instrument hardware. For example, the level of complexity of the test program may be based on the number of DUT test sites on the ATE, the number of serial site test loop operations that need to be performed, and the number of insertions that need to be performed. Other parameters that may affect the complexity of the test program are described herein. These parameters may be processed using empirically-derived equations to generate a numerical value indicative of a complexity of the test program. The numerical values for different test programs may be plotted against engineering time needed to implement those test programs. The resulting graph may be referenced during future development efforts. For example, a test engineer may identify, on the graph, a test program that has parameters similar to a new (future) test program to be developed. The graph may be used to predict the approximate amount of effort in engineering hours that will be required to develop the new test program.

Example operations that may be executed by a computing system to implement the foregoing process include identifying parameters associated with a test program. The parameters may be based on at least one of a DUT to be tested by the test program or a type of test to be performed on the DUT by the test program. The operations may also include assigning weights to the parameters. The weights may be used to emphasize or to deemphasize the importance of one, some, or all of the parameters. For example, values of the parameters may be multiplied by their respective weights. The operations may include generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights. As explained, the numerical value is indicative of the complexity of the test program. The numerical value may be used to obtain information about the amount of effort needed to develop future test programs.

FIG. 1 shows components of example ATE 10 that may be used to execute test programs of the type described herein. In FIG. 1, the dashed lines represent, conceptually, potential signal paths between components of the system.

ATE 10 includes a test head 12 and a control system 13. The control system may include a computing system comprised of one or more microprocessors or other appropriate processing devices as described herein. Device interface board (DIB) 15 includes a printed circuit board (PCB) that is connected to test head 12 and that includes mechanical and electrical interfaces to one or more DUTs (not shown) that are being tested or are to be tested by the ATE. Power, including voltage, may be run via one or more conduits in the DIB to DUTs connected to the DIB. Examples of DUTs that may be tested include digital devices, RF wireless devices, mixed signal devices, or power devices. The ATE may test combinations of two or more of these types of DUTS.

In the example of FIG. 1, DIB 15 connects, electrically and mechanically, to test head 12. The DIB includes test sites 19, which may include pins, ball grid array pads, or other points of electrical and mechanical connection to which the DUTs may connect. Test signals and response signals such as RF signals and other signals pass via test channels over the sites between the DUTs and test instruments. DIB 15 may include, among other things, connectors, conductive traces and circuitry for routing signals between the test instruments, DUTs connected to sites 19, and other circuitry. DIBs may also include relays to configure signal transmission paths. An example relay includes an electrically operated switch that may closed using low current values.

Control system 13 communicates with components included in the test head to control testing. For example, control system 13 may download test programs to test instruments 16A to 16N in the test head. The test instruments include hardware devices and may include one or more processing devices and other circuitry. Test instruments 16A to 16N may run the test programs to test DUTs in communication with the test instruments. Control system 13 may also send, to test instruments in the test head, instructions, test data, and/or other information that are usable by the test instruments to perform appropriate tests on DUTs interfaced to the DIB. In some implementations, this information may be sent via a computer or other type of network or via a direct electrical path. In some implementations, this information may be sent via a local area network (LAN) or a wide area network (WAN).

The test programs may be written in source code by a test engineer as described herein. In some implementations, the source code may be compiled by the control system to generate object code that is downloaded to the test instruments for execution. In some implementations, the source code may be downloaded to the test instruments. The test instruments may compile the source code locally and then execute the resulting object code. In an example, a test program is executed to generate a test flow to provide to the DUT. The test flow may include output test signals to elicit a response from the DUT, for example. The test program also may be configured to receive responses from the DUT, to analyze those responses, and to determine if the DUT passed testing based on analysis of the responses.

In the example of FIG. 1, ATE 10 includes multiple test instruments 16A to 16N, each of which may be configured, as appropriate, to perform one or more testing and/or other functions. Although only four test instruments are depicted, the system may include any appropriate number of test instruments, including those residing outside of test head 12. In some implementations, each test instrument may be configured to output analog, digital, or RF signals to test a DUT based, e.g., on data provided by the control system, and to receive analog, digital, or RF response signals from the DUT. Different test instruments may be configured to execute different types of test programs and/or be programmed to test different DUTs. For example, the test instruments may include an RF test instrument 16B to send RF test signals to a DUT and to receive RF response signals from the DUT. The received signals may include RF response signals that are based on the test signals and/or signals that originate from the DUT that are not prompted by (e.g., are not in response to) test signals. In some implementations, there may be electrical conductors, such as coaxial wires, between the DUT, the DIB, and the test instrument interfaces over which test and response signals are sent.

Test signals, including RF signals, may be sent to, and received from, the DUT over multiple test channels or other electrically conductive media. In some examples, a test channel may include the physical transmission medium or media over which signals are sent from the test instrument to a DUT and over which signals are received from the DUT. Physical transmission media may include, but are not limited to, electrical conductors alone or in combination with wireless transmission media. In some examples, a test channel may include a range of frequencies over which signals are transmitted over one or more physical transmission media. A test channel may include and/or electrically connect to a conductive trace on the DIB. A test channel may also include hardware on the test instrument for receiving and digitizing signals.

In some examples, ATE 10 includes a connection interface 18 that connects test instrument test channels 21 to DIB 15. Connection interface 18 may include connectors 20 or other devices for routing signals between the test instruments and DIB 15. For example, the connection interface may include one or more circuit boards or other substrates on which such connectors are mounted. Conductors that are included in the test channels may be routed through the connection interface and the DIB.

Parameters associated with the ATE, the DIB, the DUT, and the test program itself may affect a complexity of the test program. Examples of parameters that may have an impact on the complexity of a test program are shown in Table 30, which is spread across FIGS. 2 to 6. Weights, if any, that correspond to each of these parameters are shown in row “1” 31 (not included in FIGS. 5 and 6). Rows 32 contain parameter values and calculated values (described below) for different test programs. Some of the parameters may have a linear impact on the complexity and some of the parameters may have a nonlinear impact on the complexity. For example, generating and debugging a first digital test pattern in a sequence of patterns may take considerably more effort than debugging subsequent digital test patterns in the same sequence. The weights and equations explained below account for these impacts.

Parameters that may affect a complexity of the test program may include, but are not limited to, the following types of parameters.

Derivative Reuse %: This parameter identifies, in terms of percentage, the amount of a test program that can be reused in another test program. In table 30, this parameter is shown in column 0.

Hardware Reuse %: This parameter identifies, in terms of percentage, the amount of the DIB, the ATE, or other hardware that can be reused for different tests. This parameter has a weight factor of 0.8 in this example. In table 30, this parameter is shown in column P.

Test Program Origin: This parameter characterizes components of a test system based on the company that created the test program or test system and whether the test program or test system is a new version, a derivative version, or a conversion of a different test program or test system. This parameter has a weight factor of 1.00 in this example. In table 30, this parameter is shown in column Q.

Bin 1 Only: This parameter categorizes a functional test program as being correlated to known test results or not. This parameter has values of either “yes” or “no”. “Yes” indicates that the test program is fully correlated and “no” indicates that the test program is only functional and not correlated. This parameter has a weight factor of 0.65 in this example. This parameter contrasts with “Release to Production” (RTP), which means that the test program is being released for production and therefore must meet more stringent operational tolerances than a test program that is characterized as fully functional (that is, “yes” for “Bin 1”). In table 30, this parameter is shown in column R.

Device Known Good: This parameter categorizes a DUT as having a known or unknown operational status. This parameter has values of either “yes” or “no”. “Yes” indicates that the DUT is known operational as it has had some level of previous testing and has passed those tests. “No” indicates that the DUT has not been previously tested or has not passed testing. This parameter has a weight factor of 1.5 in this example. In table 30, this parameter is shown in column S.

Concurrent Test: This parameter categorizes a test program as being capable of concurrent testing. This parameter has values of either “yes” or “no”. “Yes” indicates that the test program is capable of performing two different tests on the same DUT at the same time. “No” indicates that the test program is not capable of performing two different tests on the same DUT at the same time. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column T.

Site Count: This parameter identifies the number of test sites on a DIB. This parameter has an integer value. This parameter has a weight factor of 1.00 in this example. In table 30, this parameter is shown in column U.

Total Relays: This parameter identifies the number of relays that need to be controlled on a DIB or other hardware to implement a signal transmission path for testing. This parameter has an integer value. This parameter has a weight factor of 1.33 in this example. In table 30, this parameter is shown in column V.

Number (#) of Specialized Circuit Blocks: This parameter identifies the number of specialized circuit blocks included on the DIB or elsewhere that must be accounted for—for example, configured—during testing. A specialized circuit block may include circuitry on the DIB that requires configuration to implement a signal transmission path for testing. This parameter has an integer value. This parameter has a weight factor of 3.00 in this example. In table 30, this parameter is shown in column W.

Number (#) of Test Insertions: This parameter identifies the number of test insertions that are to be performed during testing. An example test insertion includes a test performed at a target temperature. Each test insertion, therefore, includes the same test performed at a different target temperature. This parameter has an integer value. This parameter has a weight factor of 1.03 in this example. In table 30, this parameter is shown in column X.

Number (#) of Site Serial Loops: This parameter identifies the number of serial site loops performed during testing. An example serial site loop includes the number of test sites on which a piece of code is to be executed serially (as opposed to in parallel). This parameter has an integer value. This parameter has a weight factor of 1.75 in this example. In table 30, this parameter is shown in column Y.

Total Unique ATPG (Automatic Test Pattern Generated) Patterns: This parameter identifies the number of unique or different automatically generated test patterns used by the test program during testing. This parameter has an integer value. This parameter has a weight factor of 3.00 in this example. In table 30, this parameter is shown in column Z.

Total Hand Created Patterns: This parameter identifies the number of user-coded (as opposed to automatically-generated) test patterns used by the test program during testing. This parameter has an integer value. This parameter has a weight factor of 3.00 in this example. In table 30, this parameter is shown in column AA.

Unique Time Sets: This parameter is the number unique digital edge timing relationships that the digital tester channels are programmed for when using all the different digital test patterns. This parameter has a weight factor of 2.00 in this example. In table 30, this parameter is shown in column AB.

Total Flash Result: This parameter is the number of data logged test results produced by the test program when testing an embedded flash memory in the DUT. This parameter has a weight factor of 1.50 in this example. In table 30, this parameter is shown in column AC.

Number (#) of Standard Protocols: This parameter identifies the number of industry-known communication protocols used by the test program for instrumentation and data acquisition, for example. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AD.

Number (#) of Custom Protocols: This parameter identifies the number of custom-designed or unique communication protocols used by the test program for instrumentation and data acquisition, for example. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AE.

Number (#) of Digital Tests >2 Gb: This parameter identifies the number of digital tests performed by the test program on the DUT that exceed 2 Gigabits per second (Gbps) of data transfer to and from the DUT. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AF.

Number (#) of Time Measurements: This parameter identifies the number of timing measurements including rise and fall time and frequency measurements to be made on the DUT by the test program. This parameter has an integer value. This parameter has a weight factor of 1.75 in this example. In table 30, this parameter is shown in column AG.

Number (#) of AC (Alternating Current) Test Results: This parameter identifies the number of AC tests to be performed by the test program on the DUT. This parameter has an integer value. This parameter has a weight factor of 1.00 in this example. In table 30, this parameter is shown in column AH.

Number (#) of Modulated Results (“<=”) 6 GHz: This parameter identifies the number of modulated waveforms that are less than or equal to 6 Gigahertz (GHz) that are sourced and captured by the test program. An example modulated wave includes an electromagnetic wave having a carrier frequency wave modulated amplitude, frequency, and phase. This parameter has an integer value. This parameter has a weight factor of 2.00 in this example. In table 30, this parameter is shown in column AI.

Number (#) of CW Results 6 GHz: This parameter identifies the number of continuous wave (CW) test results that are less than or equal to 6 GHz and that are sourced and captured by the test program. An example continuous wave includes an electromagnetic wave having constant amplitude and frequency. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AJ.

Number (#) of Modulated Results >6 GHz: This parameter identifies the number of modulated waveforms that are greater than 6 GHz that are sourced and captured by the test program. This parameter has an integer value. This parameter has a weight factor of 1.75 in this example. In table 30, this parameter is shown in column AK.

Number (#) of CW Results >6 GHz: This parameter identifies the number of continuous wave (CW) test results that are greater than 6 GHz and that are sourced and captured by the test program. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AL.

Number (#) of RF Trim Tests. This parameter identifies the number of RF trimming tests performed by the test program on the DUT. An example RF trimming test includes trimming or reducing the bandwidth of an RF signal sent to or received from the DUT. This parameter has an integer value. This parameter has a weight factor of 1.75 in this example. In table 30, this parameter is shown in column AM.

Number (#) of DC Parametric Tests: This parameter identifies the number of direct current (DC) parametric tests performed by the test program on the DUT. Example parametric tests include testing leakage and loading tests. This parameter has an integer value. This parameter has a weight factor of 1.00 in this example. In table 30, this parameter is shown in column AN.

Number (#) of DC Continuous Power <800 A and <1400V Tests: This parameter identifies the number of tests performed by the test program on the DUT using constant DC power at less than 800 Amperes (A) of current and less than 1400V for high power devices. In an example, constant DC power includes DC power that does not change over a predefined time period. Example tests include power supply current tests and power supply rejection tests. This parameter has an integer value. This parameter has a weight factor of 1.00 in this example. In table 30, this parameter is shown in column AO.

Number (#) of DC Continuous Power >=800 A or >=1400V Tests: This parameter identifies the number of tests performed by the test program on the DUT using constant DC power generated using greater than or equal to 800 Amperes (A) of current or greater than or equal to 1400V for high power devices. This parameter has an integer value. This parameter has a weight factor of 1.25 in this example. In table 30, this parameter is shown in column AP.

Number (#) of DC Dynamic Power Tests <2500 A: This parameter identifies the number of tests performed by the test program on the DUT using dynamic DC power generated using less than 2500 Amperes (A) of current. In an example, dynamic DC power includes DC power that changes to preprogrammed values over a predefined time period. This parameter has an integer value. This parameter has a weight factor of 2.00 in this example. In table 30, this parameter is shown in column AQ.

Number (#) of DC Dynamic Power Tests >=2500 A tests: This parameter identifies the number of tests performed by the test program on the DUT using dynamic DC power generated using greater than or equal to 2500 Amperes (A) of current. This parameter has an integer value. This parameter has a weight factor of 2.50 in this example. In table 30, this parameter is shown in column AR.

Number (#) of DC Trim Tests: This parameter identifies the number of tests performed by the test program on the DUT by trimming or adjusting DUT voltages. This parameter has an integer value. This parameter has a weight factor of 1.20 in this example. In table 30, this parameter is shown in column AS.

The complexity value described herein, an example of which is called the “Solution Complexity Unit” (SCU), may be generated by processing any appropriate combination of two or more of the preceding parameters. The processing of the parameters that relate to the test program's attributes is done so by processing both linear and non-linear relationships to appropriately represent complexity.

To process the parameters to obtain a calculated complexity value, intermediary values are obtained. The intermediary values ae based on values of the parameters and weights, if any, assigned to those parameters. The following equations are also expressed in terms of the columns associated with the parameters presented table 30. In this regard, in those equations, “$” means to apply the weight for the corresponding value. So, for example, “Z$1*Z4” means to multiply the weight from row 1, column Z to the value in the cell at Z4, which is column Z, row 4 in this example. The example formulas below all reference row 3, which is the first row containing data, hence the “3” such as in “AA3+AB3”.

Total Digital Test Value:

[(Total Unique ATPG Patterns)+(Total Hand Created Patterns)]/(Log_(e) [(3.00)*[(Total Unique ATPG Patterns)+(Total Hand Created Patterns)]+(2.00)*(Unique Time Sets)+(1.5)*(Total Flash Result)+(1.25)*[(# of Standard Protocols)+(# of Custom Protocols)]+(1.25)*(# of Digital Tests >2 Gb) In table 30, this value is shown in column AT. The preceding equation expressed in terms of row, column, and/or weight values in Microsoft® Excel® (“Excel®”) equation format is as follows:

(Z3+AA3)>0,((Z3+AA3)/LN(Z$1*(Z3+AA3)))+(AB$1*AB3)±(AC$1*AC3)+(AD$1*(AD3+A E3))+(AF$1*AF3) Total Analog Test Value:

(1.75)*(# of Time Measurements)+(1.00)*(# of AC Test Results)+(2.00)*(# of Modulated Results ≤6 GHz)+(1.25)*(# of CW results)+(1.75)*(# of Modulated Results >6 GHz)+(1.25)*(# of CW Results >6 GHz)+(1.75)*(# of Trim Tests) In table 30, this value is shown in column AU. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

SUM(AG$1*AG3,AH$1*AH3,AI$1*AI3,AJ$1*AJ3,AK$1*AK3,AL$1*AL3,AM$1*AM3) Total DC Tests Value: (1.00)*(# of DC Parametric Tests)+(1.00)*(# of DC Continuous Power Tests)+(2.00)*(# of DC Dynamic Power Tests)+(1.20)*(# of DC Trim Tests)

In table 30, this value is shown in column AV. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: SUM(AN$1*AN3,AO$1*AO3,AQ$1*AQ3,AS$1*AS3)

Total Tests Value: (Total Digital Test Value)+(Total Analog Test Value)+(Total DC Tests Value)

In table 30, this value is shown in column AW. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

SUM(AT3:AV3) % Derivative, Conversion, Library Value:

if (Test Program Origin=“New Test Program” then perform the following operation to obtain the value: (Total Tests Value)*(1−(Derivative Reuse %)*0.45); or if (Test Program Origin=“Conversion Non-Teradyne” then perform the following operation to obtain the value: (Total Tests Value)*(1−(Derivative Reuse %)*0.2); or if (Test Program Origin=“Conversion Teradyne Diff. SW Platform” then perform the following operation to obtain the value: (Total Tests Value)*(1−(Derivative Reuse %)*0.3); or if (Test Program Origin=“Conversion Teradyne Same SW Platform” then perform the following operation to obtain the value: (Total Tests Value)*(1−(Derivative Reuse %)*0.4); or if (Test Program Origin=“Derivative Same Tester” then perform the following operation to obtain the value: (Total Tests Value)*(1−(Derivative Reuse %)*0.5); otherwise the value is 0. In table 30, this value is shown in column AX. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: IF(Q3=“New Test Program”,AW3*(1−O3*0.45), IF(Q3=“Conversion Non-Teradyne”,AW3*(1−O3*0.2), IF(Q3=“Conversion Teradyne Diff. SW Platform”,AW3*(1-03*0.3), IF(Q3=“Conversion Teradyne Same SW Platform”,AW3*(1−O3*0.4), IF(Q3=“Derivative Same Tester”,AW3*(1−O3*0.5),0)))))

DIB Complexity Value: [1−(0.80)*(Hardware Reuse %)]*[(1.33)[(Total Relays)+(3.00)*(# of Specialized Circuit Blocks)]

In table 30, this value is shown in column AY. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

(1−(P$1*P3))*(V$1*V3+W$1*W3) Serial Site 1 Total Value: (% Derivative, Conversion, Library Value)+(DIB Complexity Value)

In table 30, this value is shown in column AZ. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

AX3+AY3 With (w/) Site Loop Value: (Serial Site 1 Total Value)+(1.75)*(# of Serial Site Loops)

In table 30, this value is shown in column BA. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: AZ3+(Y$1*Y3)

With (w/) Site Count Value: (DIB Complexity Value)+[(With Site Loop Value)*(0.3)((Site Count)^(1/5)−1))]

In table 30, this value is shown in column BB. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

BA3+(BA3*(0.3*(U3{circumflex over ( )}(1/5)−1))) With (w/) Concurrent Test:

if (Concurrent Test Value=“Yes”) then perform the following operation to obtain the value: (1.25)*(w/Site Count Value); otherwise the value is (w/Site Count Value) In table 30, this value is shown in column BC. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

IF(T3=“Yes”,T$1*BB3,BB3) With (w/) Insertions Value:

(w/Concurrent Test Value)*(1+[(1.03-1)*((# of Test Insertions)−1)]) In table 30, this value is shown in column BD. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

BC3*(1+((X$1−1)*(X3−1))) With (w/) First Known Silicon Value:

if (Device Known Good=“No”) then perform the following operation to obtain the value: (1.5)*(w/Insertions Value); otherwise the value is (w/Insertions Value) In table 30, this value is shown in column BE. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows:

IF(S3=“No”,S$1*BD3,BD3)

With (w/) Bin 1 versus (vs) RTP Value: if (Bin 1—“Yes”) then perform the following operation to obtain the value: (0.65)*(w/First Known Silicon Value); otherwise the value is (w/First Known Silicon Value) In table 30, this value is shown in column BF. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: IF(R3=“Yes”,R$1*BE3,BE3) Calculated SCU Value: (w/Bin 1 vs RTP Value) In table 30, this value is shown in column BG. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: BF3

Calculated SCU/Ey (Engineering Year) Value:

(Calculated SCU Value)/(Number of Engineering Years to Write the Test Program) Time values other than years may be used, such as engineering hours or engineering days to develop a test program. In table 30, this value is shown in column BH. The preceding equation expressed in terms of row, column, and/or weight values in Excel® equation format is as follows: BG/BI3

Table 30, column BI show the number of engineering years taken by a test engineer to develop a test program in each row. These hours may, or may not, factor-in use of one or more specific tools used by the test engineer to develop the test program. So, for example, a test engineer using different tools would produce results having different values in column BI. Columns BJ and BK of table 30 show regions and sub-regions where testing may be performed.

FIG. 7 shows operations included in an example process 35 for generating a numerical value indicative of a complexity of the test program and for using that numerical value to obtain information about an amount of effort needed to develop future test programs. Process 35 includes identifying (36) parameters associated with a test program. The parameters affect the complexity of the test program—for example, how difficult it is to write, to debug, and/or to revise the test program. The parameters may be determined empirically based, for example, on observations and feedback from test engineers who develop test programs. The parameters may be determined empirically based, for example, on observations and analyses of tasks performed by tools used to develop the test program. The parameters may be based on a DUT to be tested by the test program, a DIB used in the test system, the test system itself, and other factors, as described above. Weights such as those described herein are assigned (37) to the parameters based, for example, on their perceived effect of the parameters on the complexity of the test program. The weights may be used to emphasize or to deemphasize the importance of one, some, or all of the parameters.

Process 35 includes generating (38) a numerical value indicative of a complexity of the test program based on the parameters, the weights, and equations that use the parameters and the weights. Examples of equations to generate the SCU, which is indicative of a complexity of the test program, are described herein.

The SCU may be used to obtain information about the amount of effort needed to develop future test programs. For example, a graph may be generated (39) that plots SCUs against times that it takes an entity, such as a test engineer or the test engineer using a particular development tool, to develop the test program. The graph may include multiple SCU values for different test programs plotted against corresponding times to develop the test programs. FIG. 8 shows an example of such graph 50. A trend line may be fitted to the SCU data points to identify a relationship between SCUs and development time. The trend may be used to predict an amount of effort that will be required by an entity, such as a test engineer or development tool, tasked to develop a future test program actually to develop the future test program.

Referring to FIG. 8, graph 50 shows SCUs for example test programs—such as Device2 51, Device31 52, Device18 53, Device 6 54, and the others shown—plotted against the number of engineering years taken to develop those test programs. To determine (40) the complexity of a future test program—for example, a test program to be developed—an existing test program having parameters that are expected to be similar to the parameters of the future test program is identified. The SCU of the existing test program may be used to predict the complexity of the future test program. Resources, such as test engineering time or test development tools, may then be allocated based on the expected complexity of the future test program.

Determining (40) the complexity of a future test program may include interpolating between the SCUs of two existing test programs having parameters similar to the future test program. For example, two existing test programs may each have a percentage of parameters that are identical or similar to the future test program. In this example, two existing test programs may each have parameters that are 80% similar to those of the future test program, 70% similar to those of the future test program, 60% similar to those of the future test program, and so forth. In that case, a location on trend line 56 may be determined that is between the SCUs of the two existing test programs. The engineering hours associated with that location may be used as the prediction for the engineering hours needed to develop the future test program.

Determining (40) the complexity of a future test program may include determining whether the numerical value of a known test program having parameters similar to those of an existing test program is an outlier on trend line 56 of FIG. 8. If so, then the prediction as to the amount of effort needed to develop the test program may be considered less accurate. In cases such as this, the allocation of resources for development of the test program may be increased to address added uncertainty.

In some implementations, the SCU may be used to obtain information about a tool used to develop the test programs. Examples of tools used to develop test programs include, but are not limited to, computer programs, computing systems, wireless devices, and DIBs or other interface boards or hardware. One of more such tools may be switched-out or changed during development. The change in tool(s) may be reflected in the SCU for the test program. For example, different DIBs may result in different SCUs for the same test program. This information may be used to identify tools that reduce that amount of effort required to develop a test program. Those tools may be used in the future to achieve comparable results with less effort.

The processes described herein may be performed by computing systems or any other appropriate computing device. The processes can be executed, at least in part, using one or more computer program products, e.g., one or more computer program tangibly embodied in one or more information carriers, such as one or more non-transitory machine-readable media, for execution by, or to control the operation of, one or more data processing apparatus, e.g., a programmable processor, a computer, multiple computers, and/or programmable logic components.

A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a network.

Actions associated with implementing all or part of the processes can be performed by one or more programmable processors executing one or more computer programs to perform the functions described herein. All or part of the processes can be implemented using special purpose logic circuitry, e.g., an FPGA (field programmable gate array) and/or an ASIC (application-specific integrated circuit).

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only storage area or a random access storage area or both. Elements of a computer (including a server) include one or more processors for executing instructions and one or more storage area devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from, or transfer data to, or both, one or more machine-readable storage media, such as mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Machine-readable storage media suitable for embodying computer program instructions and data include all forms of non-volatile storage area, including by way of example, semiconductor storage area devices, e.g., EPROM, EEPROM, and flash storage area devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

Elements of different implementations described herein may be combined to form other embodiments not specifically set forth above. Elements may be left out of the structures described herein without adversely affecting their operation. Furthermore, various separate elements may be combined into one or more individual elements to perform the functions described herein. 

What is claimed is:
 1. A method performed by one or more processing devices, comprising: identifying parameters associated with a test program, the parameters being based on at least one of a device under test (DUT) to be tested by the test program or a type of test to be performed on the DUT by the test program; assigning weights to the parameters; generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights, the numerical value being indicative of a complexity of the test program; and using the numerical value to obtain information about effort needed to develop future test programs.
 2. The method of claim 1, wherein obtaining the information comprises: generating a graph that plots the numerical value against a time period for a tool or the entity to develop the test program, the graph comprising multiple numerical values for test programs plotted against corresponding times to develop the test programs; and determining whether the numerical value is an outlier on a trend that is based on the multiple numerical values.
 3. The method of claim 1, wherein obtaining the information comprises: dividing the numerical value by an amount of time taken to develop the test program to produce a numerical value per unit time.
 4. The method of claim 1, further comprising: using the numerical value to obtain information about a tool used to develop the test program; wherein obtaining the information comprises: generating a graph that plots the numerical value against a time period to develop the test program, the graph comprising multiple numerical values for test programs plotted against corresponding times to develop the test programs; and determining whether the numerical value changes relative to a different numerical value for a different tool used to develop the test program.
 5. The method of claim 1, further comprising generating a graph that plots multiple numerical values for test programs plotted against corresponding times to develop the test programs; wherein obtaining the information comprises using the graph to predict an amount of effort by the entity tasked to develop the test program.
 6. The method of claim 1, wherein the test parameters relate to operation of the test program on a test system.
 7. The method of claim 1, wherein the test parameters relate to a test system on which the test program is operated.
 8. The method of claim 1, wherein generating the numerical value comprises executing processes based on digital testing, analog testing, and direct current (DC) testing.
 9. The method of claim 1, wherein generating the numerical value comprises performing an operation that is based on a complexity of a device interface board included on a test system configured to execute the test program.
 10. The method of claim 1, wherein generating the numerical value comprises performing an operation that is based on serial site loops employed as part of a testing process implemented by the test program.
 11. The method of claim 1, wherein generating the numerical value comprises performing an operation that is based on insertions employed as part of a testing process implemented by the test program.
 12. The method of claim 1, wherein generating the numerical value comprises performing an operation that is based on whether one or more devices under test are known-good.
 13. The method of claim 1, wherein generating the numerical value comprises performing an operation that is based on whether one or more devices under test are released to production.
 14. The method of claim 1, wherein at least one of the parameters has a linear impact on the numerical value.
 15. The method of claim 1, wherein at least one of the parameters has a non-linear impact on the numerical value.
 16. The method of claim 1, further comprising: using the numerical value to obtain information about at least one of a tool used to develop the test program or an entity tasked to develop the test program.
 17. The method of claim 16, wherein the entity comprises an engineer.
 18. The method of claim 1, wherein the DUT comprises at least one of a digital device, a radio frequency wireless device, a mixed signal device, or a power device.
 19. One or more non-transitory storage devices storing instructions that are executable by one or more processing devices to perform operations comprising: identifying parameters associated with a test program, the parameters being based on at least one of a device under test (DUT) to be tested by the test program or a type of test to be performed on the DUT by the test program; assigning weights to the parameters; generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights, the numerical value being indicative of a complexity of the test program; and using the numerical value to obtain information about effort needed to develop future test programs.
 20. The one or more non-transitory storage devices of claim 19, wherein obtaining the information comprises: generating a graph that plots the numerical value against a time period for a tool or the entity to develop the test program, the graph comprising multiple numerical values for test programs plotted against corresponding times to develop the test programs; and determining whether the numerical value is an outlier on a trend that is based on the multiple numerical values.
 21. The one or more non-transitory storage devices of claim 19, wherein obtaining the information comprises: dividing the numerical value by an amount of time taken to develop the test program to produce a numerical value per unit time.
 22. The one or more non-transitory storage devices of claim 19, wherein the operations comprise using the numerical value to obtain information about a tool used to develop the test program; and wherein obtaining the information comprises: generating a graph that plots the numerical value against a time period to develop the test program, the graph comprising multiple numerical values for test programs plotted against corresponding times to develop the test programs; and determining whether the numerical value changes relative to a different numerical value for a different tool used to develop the test program.
 23. The one or more non-transitory storage devices of claim 19, wherein the operations comprise generating a graph that plots multiple numerical values for test programs plotted against corresponding times to develop the test programs; and wherein obtaining the information comprises using the graph to predict an amount of effort by the entity tasked to develop the test program.
 24. The one or more non-transitory storage devices of claim 19, wherein the test parameters relate to operation of the test program on a test system.
 25. The one or more non-transitory storage devices of claim 19, wherein the test parameters relate to a test system on which the test program is operated.
 26. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises executing processes based on digital testing, analog testing, and direct current (DC) testing.
 27. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises performing an operation that is based on a complexity of a device interface board included on a test system configured to execute the test program.
 28. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises performing an operation that is based on serial site loops employed as part of a testing process implemented by the test program.
 29. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises performing an operation that is based on insertions employed as part of a testing process implemented by the test program.
 30. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises performing an operation that is based on whether one or more devices under test are known-good.
 31. The one or more non-transitory storage devices of claim 19, wherein generating the numerical value comprises performing an operation that is based on whether one or more devices under test are released to production.
 32. The one or more non-transitory storage devices of claim 19, wherein at least one of the parameters has a linear impact on the numerical value.
 33. The one or more non-transitory storage devices of claim 19, wherein at least one of the parameters has a non-linear impact on the numerical value.
 34. The one or more non-transitory storage devices of claim 19, wherein the operations comprise using the numerical value to obtain information about at least one of a tool used to develop the test program or an entity tasked to develop the test program.
 35. The one or more non-transitory storage devices of claim 34, wherein the entity comprises an engineer.
 36. The one or more non-transitory storage devices of claim 19, wherein the DUT comprises at least one of a digital device, a radio frequency wireless device, a mixed signal device, or a power device.
 37. A system comprising: memory storing instructions that are executable; and one or more processing devices to execute the instructions to perform operations comprising: identifying parameters associated with a test program, the parameters being based on at least one of a device under test (DUT) to be tested by the test program or a type of test to be performed on the DUT by the test program; assigning weights to the parameters; generating a numerical value for the test program based on the parameters, the weights, and equations that are based on the parameters and the weights, the numerical value being indicative of a complexity of the test program; and using the numerical value to obtain information about effort needed to develop future test programs. 